home *** CD-ROM | disk | FTP | other *** search
/ NeXT Enterprise Objects Framework 1.1 / NeXT Enterprise Objects Framework 1.1.iso / NextDeveloper / Examples / EnterpriseObjects / Archiving / ArchivingNSObject / Owner.m < prev    next >
Encoding:
Text File  |  1994-12-31  |  2.9 KB  |  132 lines

  1. /* Owner.m
  2.  *
  3.  * You may freely copy, distribute, and reuse the code in this example.
  4.  * NeXT disclaims any warranty of any kind, expressed or  implied, as to its
  5.  * fitness for any particular use.
  6.  *
  7.  * 
  8.  *
  9.  */
  10.  
  11.  
  12. #import <eointerface/eointerface.h>
  13. #import "Owner.h"
  14. #import "NSAuthor.h"
  15.  
  16. #define ARCHIVE_FILE @"NSObjectArchive"
  17.  
  18. @implementation Owner
  19.  
  20.  
  21. - appDidInit:sender
  22. {
  23.     EOAdaptorChannel    *adaptorChannel;
  24.     
  25.     // Set up the adaptor channel for debugging
  26.     adaptorChannel = [[dataSource databaseChannel] adaptorChannel]; 
  27.     [(EOAdaptorChannel *)adaptorChannel setDelegate: self];
  28.     return self;
  29. }
  30.  
  31.     
  32. - (void)adaptorChannel:channel didEvaluateExpression:(NSString *)expression
  33. {
  34.     NSLog (expression);
  35. }
  36.  
  37.  
  38. - writeObject:sender
  39. {
  40.     eoArray = [controller selectedObjects];
  41.     // Archive the first object in the array of selected objects.
  42.     //  In this example, only one object is selected at a time.
  43.     if ([eoArray count] == 0) {
  44.         NXRunAlertPanel(NULL, "No object to archive!", NULL, NULL, NULL);
  45.         return self;
  46.         }
  47.     eoAuthor = [eoArray objectAtIndex:0];
  48.     
  49.     [self archiveThisNSObject:eoAuthor]; 
  50.     
  51.     return self;
  52. }
  53.  
  54. - readObject:sender
  55. {
  56.     eoAuthor = (NSAuthor *)[self unarchiveNSObject];
  57.     return self;
  58. }
  59.  
  60.  
  61. - (BOOL) archiveThisNSObject:(NSObject *)nsobject
  62. {
  63.     BOOL    b;
  64.     NSString *archivePath;
  65.     
  66.     if (!nsobject)
  67.     return NO;
  68.     
  69.     
  70.     archivePath = [NSString stringWithFormat:@"%@/%@", [self applicationPath], ARCHIVE_FILE];
  71.     b = [NSArchiver archiveRootObject:nsobject toFile:archivePath];
  72.     if (b == YES)
  73.     [textObject appendText:"NSObject archiving succeeded\n"];
  74.     else
  75.         [textObject appendText:"NSObject archiving failed\n"];
  76.     
  77.     return b;
  78. }
  79.  
  80. - (NSObject *) unarchiveNSObject 
  81. {
  82.     NSObject *nsobject;
  83.     char     buf[1024];
  84.     NSString *archivePath;
  85.     
  86.     archivePath = [NSString stringWithFormat:@"%@/%@", [self applicationPath], ARCHIVE_FILE];
  87.  
  88.     nsobject = [NSUnarchiver unarchiveObjectWithFile:archivePath];
  89.     if (nsobject) {
  90.     [textObject appendText:"NSObject unarchiving succeeded\n"];
  91.     sprintf(buf, "%s\n",[[(NSAuthor *)nsobject description] cString]);
  92.     [textObject appendText: "Author contents:"];
  93.     [textObject appendText:buf];
  94.     }
  95.     else
  96.     [textObject appendText:"NSObject unarchiving failed\n"];
  97.  
  98.     return nsobject;
  99. }
  100.  
  101. - (NSString *)applicationPath 
  102. {
  103.     int           i;
  104.     NSString   *appPathName = nil;
  105.  
  106.     for (i = strlen(NXArgv[0]) - 1; (i >= 0) && (NXArgv[0][i] != '/'); i--);
  107.     appPathName = [NSString stringWithCString:NXArgv[0] length:i];
  108.     if (NXArgv[0][0] != '/') {
  109.     char path[MAXPATHLEN+1];
  110.     appPathName = [NSString stringWithFormat:@"%s/%@", getwd(path), appPathName];
  111.     }
  112.     return appPathName;
  113. }
  114.  
  115.  
  116. @end
  117.  
  118.  
  119. @implementation Text(printResults)
  120.  
  121. - appendText:(const char *)newText
  122. {
  123.     int currentLength = [self textLength];
  124.  
  125.     [self setSel:currentLength :currentLength];
  126.     [self replaceSel:newText];
  127.     [self scrollSelToVisible];
  128.     return self;
  129. }
  130.  
  131. @end
  132.